In recent years, computing systems have become dramatically faster, smaller, less expensive, and more powerful, such that computing systems have become an integral part of many well known and commonly used devices. People commonly use computers in their daily life, for example, in the form of personal desktop computers, laptops, palmtops, personal digital assistants, telephones, television set top boxes, and many other common devices. Recent improvements in the computer field, however, are not limited to improvements in computer hardware. Rather, computer software is more versatile and flexible then ever, allowing seamless interaction between many different computing systems, formats, and protocols.
Input for modern computer systems is not limited to the use of the well-known and conventional mouse and physical keyboard input devices. Rather, in addition to a keyboard and mouse, many of today's computers allow input in a variety of additional ways, including through electronic ink (via a pen or stylus-based computer or “tablet PC”) and speech recognition. Moreover, a wide variety of computing devices (such as PDAs, stylus-based computers, etc.) do not require a physical keyboard, but rather, they allow user input through a “soft keyboard” that appears on screen and through which a user can input information using an appropriate user input device (such as a stylus, a mouse, or the like).
Many computer users are bilingual, and in at least some instances, such users may wish to input data into their computer (e.g., via typing, handwriting, or speaking) in a language other than the language they typically use. For example, employees of multinational corporations may receive email and/or other documents from their colleagues or customers located in a variety of different countries. In some instances, the receiver may wish to respond in the language of the person sending the information. Modern computing systems do not provide an easy way of allowing users to temporarily change an input language for an application program and/or a particular thread in an application program while enabling users to take advantage of various tools at the user's disposal for use in the newly selected language, such as a soft keyboard layout, a handwriting recognizer, and/or a speech recognizer corresponding to the newly selected language.